﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary; // Namespace til serialisering, binær data

namespace Frugtplantage
{
    class SkaderCollection
    {
        //Deklaration
        List<Skader> SkaderListe;

        //Constructor
        public SkaderCollection()
        {
            SkaderListe = new List<Skader>();
        }


        //------------
        // Set metoder
        //------------

        // Opret i listen
        public void SetMySkade(string markNummer, string skadeType, string beskrivelse)
        {
            Skader minSkade = new Skader(markNummer, skadeType, beskrivelse);
            SkaderListe.Add(minSkade);
        }

        // Opdater felt i liste
        public void updateMySkade(int indexID, string updateMarkNummer, string updateSkadeType, string updateBeskrivelse)
        {
            Skader minskade = new Skader(updateMarkNummer, updateSkadeType, updateBeskrivelse);
            SkaderListe[indexID] = minskade;
        }

        // Fjern fra listen
        public void FjernMySkade(int indexID)
        {
            SkaderListe.RemoveAt(indexID);
        }

        //------------
        // Get metoder
        //------------

        // Get alle marker metode (overdrager listen)
        public List<Skader> GetMySkade()
        {
            return SkaderListe;
        }


        //-------------------------
        // Gem og hent data fra fil
        //-------------------------

        // Gem data
        public void GemData()
        {
            try
            {
                // Skab fil for skrivning
                FileStream fileStream = new FileStream("skader.bin", FileMode.Create, FileAccess.Write);

                // skab binary-formatter til objekt-serialisering
                BinaryFormatter binFormatter = new BinaryFormatter();

                // serialiser medlemssystem til filestream
                binFormatter.Serialize(fileStream, SkaderListe);

                fileStream.Close();
            }
            catch (Exception ex)
            {
                
                MessageBox.Show(ex.ToString());
            }
            

        }

        // Hent data
        public void HentData()
        {
            FileStream filestream;
            try
            {
                filestream = new FileStream("skader.bin", FileMode.Open, FileAccess.Read);
            }
            catch (Exception)
            {

                throw;
            }


            BinaryFormatter binFormatter = new BinaryFormatter();

            SkaderListe = (List<Skader>)binFormatter.Deserialize(filestream);


            filestream.Close();
        }
    }
}
